﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SWDataDB.Models;
using SWDataDB.DAL;
using System.Security.Cryptography;

namespace SWDataDB.BLL
{
    // 主要是负责用户登录, 用户申请
    public class UserManange
    {
        public UserManange() { }

        /// <summary>
        /// 对密码进行MD5加密处理
        /// </summary>
        /// <param name="strPsw"></param>
        /// <returns></returns>
        public string EncodeMD5(string strPsw)
        {
            string strMD5Psw = string.Empty;
            byte[] result = Encoding.Default.GetBytes(strPsw);    //tbPass为输入密码的文本框
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            strMD5Psw = BitConverter.ToString(output).Replace("-", "");

            return strMD5Psw;
        }

        public short IdentifyUser(Int32 UserGroup, string strUser, string strPsw)
        {
            // 验证过程
            // 1. 直接使用用户名密码匹配：成功则返回1;
            // 2. 如果失败，则对用户名进行查询，成功则返回0(密码错误),失败则返回-1(用户名不存在)
            UserTbl user = new UserTbl();
            if (user.SelectUser(UserGroup, strUser, strPsw))
            {
                return 1;

            }
            else
            {
                if (user.IsUserExist(strUser))
                {
                    if (user.IsUserGroup(UserGroup, strUser))
                    {
                        return 0; 
                    }
                    else return -1;
                }
                else return -2;
            }

             
        }

        public short IsUserExist(string strUser)
        {
            UserTbl user = new UserTbl();
            if (user.IsUserExist(strUser))
                return 1;

            return 0;
        }

        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="strUser"></param>
        /// <param name="strPsq"></param>
        /// <returns>1-成功;0-用户已存在;-1-其它失败(一般不会出现)</returns>
        public short RegisterNewUser(string strUser, string strPsw, string strReal, short nGroup)
        {
            // 先要验证用户是否存在
            // 然后才能新增用户

            UserTbl user = new UserTbl();
            if (user.IsUserExist(strUser))
                return 0;

            string strEncodePsw = EncodeMD5(strPsw);
            if (user.AddUser(strUser, strEncodePsw, strReal, nGroup) > 0)
                return 1;
            return -1;
        }
    }
}
